# coding=utf-8
'''
Created on 2012-4-6

'''

import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtCore import Qt
from PyQt4.QtCore import QPoint
from PyQt4.QtCore import QTimer
from PyQt4.QtCore import QTime
from PyQt4.QtGui import QPainter
from PyQt4.QtGui import QColor
from PyQt4.QtGui import QPolygon
from PyQt4.QtCore import SIGNAL as signal


class Clock(QtGui.QWidget):
    '''
    classdocs
    '''

    def __init__(self):
        '''
        Constructor
        '''

        super(Clock, self).__init__()
        self.txt = u'好好学习天天向上 guocdfeifei@163.com'
        self.label = QLabel(self)

        # self.label.setFixedHeight(100)
        self.label.setAlignment(Qt.AlignCenter)
        self.label.setText(self.txt)
        self.hourColor = QColor(127, 0, 127);
        self.minuteColor = QColor(0, 127, 127, 191)
        self.secondColor = QColor(127, 127, 0, 120)
        self.initUI()
        self.timer = QTimer()
        # self.timer.timeout.connect(self.update)
        self.timer.start(30)
        self.label.setFixedWidth(self.width())
        self.label.setFixedHeight(self.height())
        self.label.setFont(QFont("微软雅黑", 18))
        self.show()

    def handChange(self):

        self.side = min(self.width(), self.height())
        self.hand = (max(self.side / 200, 4), max(self.side / 100, 8), max(self.side / 40, 30))
        self.hourHand = QPolygon(
            [QPoint(self.hand[0], self.hand[1]), QPoint(-self.hand[0], self.hand[1]), QPoint(0, -self.hand[2])])
        self.minuteHand = QPolygon(
            [QPoint(self.hand[0], self.hand[1]), QPoint(-self.hand[0], self.hand[1]), QPoint(0, -self.hand[2] * 2)])
        self.secondHand = QPolygon(
            [QPoint(self.hand[0], self.hand[1]), QPoint(-self.hand[0], self.hand[1]), QPoint(0, -self.hand[2] * 3)])
        self.label.setFixedWidth(self.width())
        self.label.setFixedHeight(self.height())

    def set_transparency(self, enabled):
        if enabled:
            self.setAutoFillBackground(False)
        else:
            self.setAttribute(Qt.WA_NoSystemBackground, False)
        # 下面这种方式好像不行
        #        pal=QtGui.QPalette()
        #        pal.setColor(QtGui.QPalette.Background, QColor(127, 127,10,120))
        #        self.setPalette(pal)
        self.setAttribute(Qt.WA_TranslucentBackground, enabled)
        self.repaint()

    def initUI(self):

        self.setGeometry(50, 300, 1200, 30)
        self.setWindowTitle('Clock')
        # self.handChange()
        self.rightButton = False
        # 下面两个配合实现窗体透明和置顶
        sizeGrip = QtGui.QSizeGrip(self)
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.SubWindow)
        # self.setMouseTracking(True);
        self.trans = True

        # self.set_transparency(True)

        quitAction = QtGui.QAction(QtGui.QIcon('quit.png'), '&Quit', self)
        self.connect(quitAction, signal("triggered()"), QtGui.qApp.quit)
        backAction = QtGui.QAction('&setting', self)
        self.connect(backAction, signal("triggered()"), self.chanagetxt)
        self.popMenu = QtGui.QMenu()
        self.popMenu.addAction(quitAction)
        self.popMenu.addAction(backAction)
        self.backClicked()

    def resizeEvent(self, e):
        self.handChange()

    def chanagetxt(self):
        # self.label['text']='afei'
        text, ok = QInputDialog.getText(self, u'输入框', u'输入需要展示的文字:')
        if ok:
            self.label.setText(text)
        # self.label.setText(text)

    def backClicked(self):
        if self.trans == True:
            self.trans = False
            self.set_transparency(False)
        else:
            self.trans = True
            self.set_transparency(True)

    def mouseReleaseEvent(self, e):
        if self.rightButton == True:
            self.rightButton = False
            self.popMenu.popup(e.globalPos())

    def mouseMoveEvent(self, e):
        if e.buttons() & Qt.LeftButton:
            self.move(e.globalPos() - self.dragPos)
            e.accept()

    def mousePressEvent(self, e):

        if e.button() == Qt.LeftButton:
            self.dragPos = e.globalPos() - self.frameGeometry().topLeft()
            e.accept()
        if e.button() == Qt.RightButton and self.rightButton == False:
            self.rightButton = True

    def paintEvent(self, e):
        print('afei')

        # time = QTime.currentTime()
        # qp = QPainter()
        #
        # # 如果绘制文本宽度小于控件宽度，不需要滚动，文本居中对齐
        # qp.setPen(QColor(255, 255, 255, 255));
        # self.textRect = qp.drawText(QRect(0, -7, self.width(), 25), Qt.AlignHCenter | Qt.AlignVCenter, self.txt)
        # self.t.stop()
        #
        # qp.begin(self)
        # # qp.setRenderHint(QPainter.Antialiasing)  # 开启这个抗锯齿,会很占cpu的!
        # qp.translate(self.width() / 2, self.height() / 2)
        # qp.scale(self.side / 200.0, self.side / 200.0)
        #
        # qp.setPen(QtCore.Qt.NoPen)
        # qp.setBrush(self.hourColor)
        # qp.save()
        # qp.rotate(30.0 * ((time.hour() + time.minute() / 60.0)))
        # qp.drawConvexPolygon(self.hourHand)
        # qp.restore()
        #
        # qp.setPen(self.hourColor)
        # for i in range(12):
        #     qp.drawLine(88, 0, 96, 0)
        #     qp.rotate(30.0)
        #
        # qp.setPen(QtCore.Qt.NoPen)
        # qp.setBrush(self.minuteColor)
        # qp.save()
        #
        # qp.rotate(6.0 * ((time.minute() + (time.second() + time.msec() / 1000.0) / 60.0)))
        # qp.drawConvexPolygon(self.minuteHand)
        # qp.restore()
        #
        # qp.setPen(self.minuteColor)
        # for i in range(60):
        #     if (i % 5) is not 0:
        #         qp.drawLine(92, 0, 96, 0)
        #     qp.rotate(6.0)
        #
        # qp.setPen(QtCore.Qt.NoPen)
        # qp.setBrush(self.secondColor)
        # qp.save()
        # qp.rotate(6.0 * (time.second() + time.msec() / 1000.0))
        # qp.drawConvexPolygon(self.secondHand)
        # qp.restore()
        # qp.end()


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    clock = Clock()
    sys.exit(app.exec_())